Current parallel graphics data processing includes systems and methods developed to perform specific operations on graphics data such as, for example, linear interpolation; tessellation, rasterization, texture mapping, depth testing, etc. Traditionally, graphics processors used fixed function computational units to process graphics data; however, more recently, portions of graphics processors have been made programmable, enabling such processors to support a wider variety of operations for processing vertex and fragment data.
Anti-aliasing techniques are well-known in the art of computer-generated graphics. Aliasing refers to image artifacts caused by a limited sampling resolution of smooth curves. There are many common techniques to reduce the artifacts caused by aliasing. For example, supersample anti-aliasing (SSAA) is a technique that selects multiple points within each pixel (not just the pixel center), shades each of the multiple points to generate multiple color values for the pixel, and then blends the multiple color values to generate a filtered color value for the pixel. It will be appreciated that SSAA increases the resolution of the generated digital image and then down-samples the digital image (i.e., filters) to get a digital image at the desired resolution. The artifacts due to aliasing in the down-sampled digital image are reduced when compared to an image generated at the final resolution. However, SSAA has drawbacks in that each point sampled within a pixel increases the computation required to generate the digital image (e.g., 4.times.SSAA requires approximately 4 times the number of texture operations compared to techniques which compute a single color for the pixel at the center of the pixel).
Another anti-aliasing technique is multi-sample anti-aliasing (MSAA). In MSAA, the graphics processing pipeline implements certain operations using multiple sample points within each pixel. MSAA typically involves a smaller number of computations when compared to SSAA because, e.g., texture reads may be only performed for a single point for each pixel.